"OFIELD CONSTANT, \"ff0000\", \"%s\" # COLOR\n"
"OFIELD CONSTANT, \"47\", \"%s\" # ICON\n"
;
+static char navigonwpt[] =
+"# gpsbabel XCSV style file\n"
+"# Author: Tom Glaab\n"
+"#\n"
+"DESCRIPTION Navigon Waypoints\n"
+"SHORTLEN 8\n"
+"#\n"
+"#\n"
+"# FILE LAYOUT DEFINITIIONS:\n"
+"#\n"
+"FIELD_DELIMITER |\n"
+"RECORD_DELIMITER NEWLINE\n"
+"BADCHARS |\n"
+
+"#\n"
+"# INDIVIDUAL DATA FIELDS, IN ORDER OF APPEARANCE:\n"
+"#\n"
+
+"OFIELD SHORTNAME, \"\",\"[%-.14s \"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"\",\"]\"\n"
+"OFIELD CONSTANT, \"%s\",\"[0][17]\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD LON_DECIMAL, \"\", \"%08.5f\"\n"
+"OFIELD LAT_DECIMAL, \"\", \"%08.5f\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"\"\n"
+"OFIELD CONSTANT, \"%s\",\"49\"\n"
+;
static char nima[] =
"# gpsbabel XCSV style file\n"
"#\n"
"IFIELD IGNORE, \"\", \"%-.31s\"\n"
"IFIELD DESCRIPTION, \"\", \"%-.78s\"\n"
;
-style_vecs_t style_list[] = {{ "xmapwpt", xmapwpt } , { "xmap2006", xmap2006 } , { "xmap", xmap } , { "tomtom_itn", tomtom_itn } , { "tomtom_asc", tomtom_asc } , { "tabsep", tabsep } , { "sportsim", sportsim } , { "saplus", saplus } , { "s_and_t", s_and_t } , { "openoffice", openoffice } , { "nima", nima } , { "mxf", mxf } , { "mapconverter", mapconverter } , { "kwf2", kwf2 } , { "ktf2", ktf2 } , { "kompass_wp", kompass_wp } , { "kompass_tk", kompass_tk } , { "iblue747", iblue747 } , { "gpsman", gpsman } , { "gpsdrivetrack", gpsdrivetrack } , { "gpsdrive", gpsdrive } , { "geonet", geonet } , { "garmin_poi", garmin_poi } , { "garmin301", garmin301 } , { "fugawi", fugawi } , { "dna", dna } , { "custom", custom } , { "cup", cup } , { "csv", csv } , { "cambridge", cambridge } , { "arc", arc } , {0,0}};
-size_t nstyles = 31;
+style_vecs_t style_list[] = {{ "xmapwpt", xmapwpt } , { "xmap2006", xmap2006 } , { "xmap", xmap } , { "tomtom_itn", tomtom_itn } , { "tomtom_asc", tomtom_asc } , { "tabsep", tabsep } , { "sportsim", sportsim } , { "saplus", saplus } , { "s_and_t", s_and_t } , { "openoffice", openoffice } , { "nima", nima } , { "navigonwpt", navigonwpt } , { "mxf", mxf } , { "mapconverter", mapconverter } , { "kwf2", kwf2 } , { "ktf2", ktf2 } , { "kompass_wp", kompass_wp } , { "kompass_tk", kompass_tk } , { "iblue747", iblue747 } , { "gpsman", gpsman } , { "gpsdrivetrack", gpsdrivetrack } , { "gpsdrive", gpsdrive } , { "geonet", geonet } , { "garmin_poi", garmin_poi } , { "garmin301", garmin301 } , { "fugawi", fugawi } , { "dna", dna } , { "custom", custom } , { "cup", cup } , { "csv", csv } , { "cambridge", cambridge } , { "arc", arc } , {0,0}};
+size_t nstyles = 32;
#else /* CSVFMTS_ENABLED */
style_vecs_t style_list[] = {{0,0}};
size_t nstyles = 0;
./gpsbabel -D 2 -t -w -i mtk -f /dev/ttyUSB0 -o gpx -F out.gpx
# Parse an existing .bin file (data_2007_09_04.bin), output trackpoints as
- # both CSV file and GPX
- ./gpsbabel -D 2 -t -i mtk-bin,csv=data__2007_09_04.csv -f data_2007_09_04.bin -o gpx -F out.gpx
+ # both CSV file and GPX, discard points without fix
+ ./gpsbabel -D 2 -t -i mtk-bin,csv=data__2007_09_04.csv -f data_2007_09_04.bin -x discard,fixnone -o gpx -F out.gpx
Todo:
o ....
"Invalid packet", "Unsupported packet type",
"Valid packet but action failed", "Valid packet, action success" };
+#define MTK_EVT_BITMASK (1<<0x02)
+#define MTK_EVT_PERIOD (1<<0x03)
+#define MTK_EVT_DISTANCE (1<<0x04)
+#define MTK_EVT_SPEED (1<<0x05)
+#define MTK_EVT_START (1<<0x07)
+
/* *************************************** */
/* Data id, type, sizes used by MTK chipset - don't touch.... */
unsigned int bitmask;
int logLen;
int period, distance, speed; /* in 10:ths of sec, m, km/h */
+ int track_event;
} mtk_loginfo;
/* *************************************** */
char wp_name[20];
waypoint *trk = waypt_new();
- if ( global_opts.masked_objective & TRKDATAMASK && trk_head == NULL ){
+ if ( global_opts.masked_objective & TRKDATAMASK && (trk_head == NULL || (mtk_info.track_event & MTK_EVT_START) ) ){
+ char spds[50];
trk_head = route_head_alloc();
- xasprintf(&trk_head->rte_desc, "Log every %.0f sec, %.0f m, %.0f km/h"
- , mtk_info.period/10., mtk_info.distance/10., mtk_info.speed/10.);
+ xasprintf(&trk_head->rte_name, "track-%d", 1+track_count() );
+
+ spds[0] = '\0';
+ if ( mtk_info.speed > 0 )
+ sprintf(spds, " when moving above %.0f km/h", mtk_info.speed/10.);
+ xasprintf(&trk_head->rte_desc, "Log every %.0f sec, %.0f m%s"
+ , mtk_info.period/10., mtk_info.distance/10., spds);
track_add_head(trk_head);
}
unsigned char crc;
struct data_item itm;
- dbg(5,"Entering mtk_parse, count = %i, dataLen = %i\n",
- count, dataLen);
+ dbg(5,"Entering mtk_parse, count = %i, dataLen = %i\n", count, dataLen);
if ( global_opts.debug_level > 5 ) {
int j;
fprintf(stderr,"# Data block:");
add_trackpoint(count, bmask, &itm);
+ mtk_info.track_event = 0;
return i;
}
dbg(1, "# Log bitmask is: %.8x\n", bm);
if ( is_m241 )
bm &= 0x7fffffffU;
- if ( mtk_info.bitmask != bm )
+ if ( mtk_info.bitmask != bm ){
dbg(1," ########## Bitmask Change %.8x -> %.8x ###########\n", mtk_info.bitmask, bm);
+ mtk_info.track_event |= MTK_EVT_BITMASK;
+ }
mtk_info.bitmask = bm;
mtk_info.logLen = mtk_log_len(mtk_info.bitmask);
break;
case 0x03:
dbg(1, "# Log period change %.0f sec\n", cmd/10.);
+ mtk_info.track_event |= MTK_EVT_PERIOD;
mtk_info.period = cmd;
break;
case 0x04:
dbg(1, "# Log distance change %.1f m\n", cmd/10.);
+ mtk_info.track_event |= MTK_EVT_DISTANCE;
mtk_info.distance = cmd;
break;
case 0x05:
dbg(1, "# Log speed change %.1f km/h\n", cmd/10.);
+ mtk_info.track_event |= MTK_EVT_SPEED;
mtk_info.speed = cmd;
break;
case 0x06:
dbg(1, "# Log policy change 0x%.4x\n", cmd);
- if ( cmd == 0x01 )
+ if ( cmd == 0x01 )
dbg(1, "# Log policy change to OVERWRITE\n");
if ( cmd == 0x02 )
dbg(1, "# Log policy change to STOP\n");
break;
case 0x07:
- if ( cmd == 0x0106 )
- dbg(5, "# GPS Logger# Turned On\n"); // Fixme - start new trk
+ if ( cmd == 0x0106 ){
+ dbg(5, "# GPS Logger# Turned On\n"); // Fixme - start new trk
+ mtk_info.track_event |= MTK_EVT_START;
+ }
if ( cmd == 0x0104 )
dbg(5, "# GPS Logger# Log disabled\n");
break;
mtk_info.distance = log_distance;
mtk_info.speed = log_speed;
}
-
+ mtk_info.track_event = 0;
+
pos = 0x200; // skip header...first data position
fseek(fl, pos, SEEK_SET);